Modul 4 von 12 · 📖 11 min Lesezeit · ⏱ 30 min gesamt

FI-DV 04 MQTT und Sparkplug B

Inhaltsverzeichnis (6 Abschnitte)
  1. Konzepte und Hintergrund
  2. Architektur-Diagramm
  3. Praktische Schritte
  4. Häufige Fallstricke
  5. Weiterführende Ressourcen
  6. Wissens-Check

FI-DV 04 MQTT und Sparkplug B

MQTT (Message Queuing Telemetry Transport) ist ein leichtgewichtiges Publish/Subscribe-Protokoll, das für die effiziente Übertragung von Daten in vernetzten Systemen konzipiert wurde. In diesem Modul erlernen Sie die Grundlagen der MQTT-Architektur, verstehen die verschiedenen Quality-of-Service-Levels und beherrschen den Umgang mit Retained Messages. Sie erhalten Einblicke in Sicherheitskonzepte für MQTT-Installationen und lernen die Spezifika des Sparkplug B-Standards zur Standardisierung von Industrieanwendungen kennen.

Die praktische Anwendung steht im Fokus: Sie konfigurieren einen MQTT-Broker, implementieren Client-Anwendungen und integrieren Sparkplug B für die nahtlose Kommunikation zwischen Geräten und Anwendungen. Nach Abschluss dieses Moduls sind Sie in der Lage, MQTT-basierte Lösungen für die industrielle Automatisierung und IoT-Anwendungen zu planen und umzusetzen.

Konzepte und Hintergrund

MQTT-Broker
Die zentrale Instanz, die alle Nachrichten von Publishern entgegennimmt und an die entsprechenden Subscriber weiterleitet. Der Broker verwaltet die Topics und stellt die Verbindung zwischen den Clients her.
Quality of Service (QoS)
Drei Stufen (0, 1, 2), die die Zuverlässigkeit der Nachrichtenübertragung definieren. QoS 0 bietet "at most once"-Lieferung, QoS 1 "at least once" und QoS 2 "exactly once" mit erhöhtem Overhead.
Retained Messages
Vom Broker gespeicherte Nachrichten, die an neue Subscriber gesendet werden, die sich für ein Topic anmelden. Dies stellt sicher, dass neue Clients sofort den aktuellen Zustand erhalten.
Sparkplug B
Ein Open-Standard, der MQTT um semantische Strukturen erweitert. Er definiert ein festes Topic-Format und Nachrichtenschema für die Überwachung, Steuerung und Datenakquisition in industriellen Anwendungen.
Willow-Way-Topic-Hierarchie
Die standardisierte Topic-Struktur von Sparkplug B, die eine klare Trennung zwischen Metadaten (NDATA), Nutzdaten (DDATA) und Befehlen (CMD) ermöglicht und eine hierarchische Organisation der Geräte ermöglicht.

Architektur-Diagramm

flowchart TD
    A[Edge Device] -->|Publish/Subscribe| B[MQTT Broker]
    C[SCADA System] -->|Subscribe| B
    D[Historian] -->|Subscribe| B
    E[IIoT Platform] -->|Publish/Subscribe| B
    F[Human Machine Interface] -->|Subscribe| B
    B -->|Sparkplug B| G[Application Server]
    
    style A fill:#f9f,stroke:#333,stroke-width:2px
    style B fill:#bbf,stroke:#333,stroke-width:2px
    style G fill:#bfb,stroke:#333,stroke-width:2px

Praktische Schritte

  1. Installieren Sie den Eclipse Mosquitto MQTT-Broker auf einem Linux-System mit dem Befehl
    sudo apt install mosquitto mosquitto-clients
    . Dies stellt die Grundinfrastruktur für die MQTT-Kommunikation bereit.
  2. Konfigurieren Sie die Sicherheit des Brokers, indem Sie eine Passwortdatei mit
    mosquitto_passwd -c /etc/mosquitto/passwortfile benutzername
    erstellen und die Konfiguration in
    listener 1883
    allow_anonymous false
    password_file /etc/mosquitto/passwortfile
    anpassen. Dies schützt den Broker vor unbefugtem Zugriff.
  3. Erstellen Sie eine Testumgebung mit zwei Terminals: Eines für den Publisher (
    mosquitto_pub -h localhost -u benutzername -P passwort -t test/topic -m "Hallo MQTT"
    ) und eines für den Subscriber (
    mosquitto_sub -h localhost -u benutzername -P passwort -t test/topic
    ). Dies verifiziert die grundlegende Funktionsfähigkeit.
  4. Implementieren Sie Sparkplug B-Kompatibilität, indem Sie die Bibliothek
    pip install sparkplugbpayload
    installieren und ein Node-Birth-Paket mit
    from sparkplugbpayload import SparkplugBPayload
    payload = SparkplugBPayload("NBIRTH")
    payload.add_metric("Node Control/Rebirth", "boolean", False)
    payload.serialize()
    erstellen. Dies initialisiert ein Sparkplug-fähiges Gerät.
  5. Konfigurieren Sie Retained Messages für kritische Zustandsdaten mit
    mosquitto_pub -r -t device/status -m "online"
    . Dies stellt sicher, dass neue Clients sofort den aktuellen Gerätestatus erhalten.
  6. Testen Sie die verschiedenen QoS-Levels, indem Sie Nachrichten mit
    mosquitto_pub -q 0 -t qos/test -m "QoS 0"
    ,
    mosquitto_pub -q 1 -t qos/test -m "QoS 1"
    und
    mosquitto_pub -q 2 -t qos/test -m "QoS 2"
    senden und das Verhalten im Subscriber beobachten. Dies hilft bei der Auswahl des passenden QoS für Ihre Anwendung.

Häufige Fallstricke

Weiterführende Ressourcen

Wissens-Check

Vier Fragen zur Selbstkontrolle. Klicken Sie jede Frage an, um die richtige Antwort und Erklärung zu sehen.

Was ist die Hauptaufgabe eines MQTT-Brokers in einem Publish/Subscribe-System?
  • A) Die Datenverschlüsselung aller Nachrichten sicherstellen
  • B) Nachrichten von Publishern entgegennehmen und an passende Subscriber weiterleiten
  • C) Die Authentifizierung aller Clients im Netzwerk durchführen
  • D) Die Datenpersistenz für alle Nachrichten garantieren

Richtige Antwort: B. Der Broker fungiert als Vermittler, der Nachrichten basierend auf den Topics an die entsprechenden Subscriber weiterleitet. Die anderen Optionen sind zwar wichtige Aspekte von MQTT-Systemen, aber nicht die Hauptaufgabe des Brokers.

Welcher Quality-of-Service-Level garantiert "exactly once"-Lieferung bei MQTT?
  • A) QoS 0
  • B) QoS 1
  • C) QoS 2
  • D) QoS 3

Richtige Antwort: C. QoS 2 stellt sicher, dass jede Nachricht genau einmal an den Empfänger gelangt, allerdings mit dem höchsten Overhead. QoS 0 bietet "at most once"-Lieferung, QoS 1 "at least once", und es gibt keinen QoS 3 in MQTT.

Was ist der Hauptzweik von Retained Messages in MQTT?
  • A) Die Last auf dem Broker durch Nachrichtenpufferung reduzieren
  • B) Neue Subscriber sofort mit dem aktuellen Zustand eines Topics versorgen
  • C) Die Verbindung zwischen Clients bei Unterbrechung wiederherstellen
  • D) Die Sicherheit durch Verschlüsselung aller gespeicherten Nachrichten erhöhen

Richtige Antwort: B. Retained Messages stellen sicher, dass neue Subscriber, die sich für ein Topic anmelden, sofort den aktuellen Zustand erhalten. Die anderen Optionen beschreiben andere MQTT-Konzepte oder sind nicht die Hauptfunktion von Retained Messages.

Was ist der wesentliche Vorteil des Sparkplug B-Standards im Vergleich zum Standard-MQTT?
  • A) Höhere Übertragungsgeschwindigkeit durch Komprimierung
  • B) Erweiterung um semantische Strukturen und standardisierte Topic-Formate
  • C) Geringeren Speicherbedarf auf dem Broker
  • D) Einfachere Implementierung für kleine Geräte

Richtige Antwort: B. Sparkplug B erweitert MQTT um semantische Strukturen und definiert ein festes Topic-Format und Nachrichtenschema, was die Interoperabilität in industriellen Anwendungen verbessert. Die anderen Optionen sind nicht die Kernvorteile von Sparkplug B.